Skip to main content

Formularios reactivos

Los formularios reactivos en Angular permiten manejar los formularios de forma programática en lugar de depender solo de la plantilla. Esta metodología ofrece una mayor flexibilidad y control sobre los formularios.

Paso 1: Importar ReactiveFormsModule

Para empezar, importa el módulo ReactiveFormsModule de @angular/forms en tu componente. Esto habilita el uso de formularios reactivos en tu aplicación.

import { ReactiveFormsModule } from '@angular/forms';

@Component({
selector: 'app-root',
standalone: true,
template: `
<form>
<label>Name
<input type="text" />
</label>
<label>Email
<input type="email" />
</label>
<button type="submit">Submit</button>
</form>
`,
imports: [ReactiveFormsModule],
})

Paso 2: Crear FormGroup con FormControl

Angular utiliza la clase FormControl para representar los controles del formulario (como entradas de texto). La clase FormGroup permite agrupar estos controles y facilita el manejo de formularios complejos.

Define un FormGroup llamado profileForm con dos controles (name y email):

import { ReactiveFormsModule, FormControl, FormGroup } from '@angular/forms';

export class AppComponent {
profileForm = new FormGroup({
name: new FormControl(''),
email: new FormControl(''),
});
}

Paso 3: Conectar FormGroup y FormControl al Formulario

Cada FormGroup se conecta al formulario mediante la directiva [formGroup], mientras que cada FormControl se enlaza con formControlName, asignado al nombre correspondiente.

<form [formGroup]="profileForm">
<label>
Name
<input type="text" formControlName="name" />
</label>
<label>
Email
<input type="email" formControlName="email" />
</label>
<button type="submit">Submit</button>
</form>

Paso 4: Acceder y Mostrar los Valores del Formulario

Accede a los valores de los controles a través del FormGroup. En este caso, muestra el valor de los campos en el HTML:

<h2>Profile Form</h2>
<p>Name: {{ profileForm.value.name }}</p>
<p>Email: {{ profileForm.value.email }}</p>

Paso 5: Manejar la Subida del Formulario

Agrega el método handleSubmit() en la clase del componente para gestionar el envío del formulario y acceder a los valores del FormGroup.

handleSubmit() {
alert(
this.profileForm.value.name + ' | ' + this.profileForm.value.email
);
}

Paso 6: Agregar ngSubmit al Formulario

Finalmente, usa la directiva (ngSubmit) para llamar al método handleSubmit cuando el formulario sea enviado.

<form
[formGroup]="profileForm"
(ngSubmit)="handleSubmit()">
</form>

¡Y eso es todo! Ahora sabes cómo manejar formularios reactivos en Angular, que te da control total sobre los datos, eventos y validaciones en tus formularios.